A.A - Rewards (签到)
题意
三种A物品,三种B物品;
容器一次只能装五个A或者十个B不能同时装A和B
思路
水
1 |
|
B - Suffix Structures (分类讨论)
题意
让你判断字符串A能否变成字符串B
如果字符串A能通过删去某些数变成B 输出巴拉巴拉
如果字符串A能通过对调某个数变成B 输出巴拉巴拉
如果字符串A同时需要上面两个操作才能变成B 输出巴拉巴拉
如果字符串A通过上面两个操作都不能变B 输出巴拉巴拉
思路
还有啥,直接模拟呗
1 |
|
C - Painting Fence(分治)
题意
给出一排木板,木板的高度为A[i],宽度为1.
你手里有一个大小为1的刷子,你每次可以一次性刷一条不间断直线
问你最少刷几次可以把这一排木板刷完
思路
首先 假设如果我们全部横着刷
那么我们就需要最爱的木板高度+其他凸出来的次数
假设我们数着刷那么我们就需要刷木板的个数
所以我们就只要这两种情况取个优
再判断横着刷的时候 凸出来的需要另外考虑 这又是一个小问题,所以我们可以分治去做
1 |
|
D.D - Multiplication Table (二分)
题意
对于一个乘法表 求出第K大的数是多少
思路
我们发现对于一行或者一列他们的值都是递增的 所以满足二分的性质
于是我们二分答案;
可以求出每一行有多少个值小于这个答案
1 | include<bits/stdc++.h> |
E - Divisors (dfs)
题意
定义一个函数为F(a){a为一个数组}
F(a)的值为a的元素的所有因数依次排列
定义一个数组P[a]
P[i]的递推式为P[i]=P(X[i-1])
现在给你P[0]让你求出P[k];
思路
很明显这个P是递归的,而且只需要输出前1e5项,那么我们就直接暴力枚举因子就行
1 |
|